package com.sw.code4j.freemarker;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileWriter;
import java.util.Map;

/**
 * @author: 张上亚 2021/11/30 10:38
 * @desc:  FreeMarker工具类
 */
public class FreeMarkerUtil {
    private static Configuration config;

    static {
        config = new Configuration(Configuration.VERSION_2_3_23);
        config.setTemplateUpdateDelayMilliseconds(1000 * 60 * 60 * 8);
        config.setClassForTemplateLoading(FreeMarkerUtil.class, "/code4j/ftl");
    }

    /**
     * 根据模板生成文件
     * @param ftlName - 模板文件
     * @param data - 填充数据
     * @param savePath - 生成文件目录
     * @throws Exception
     */
    public static void generateFile(String ftlName, Map<String, Object> data, String savePath) throws Exception {
        System.out.println(savePath + " 开始生成" );
        File file = new File(savePath);
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        FileWriter out = new FileWriter(file);
        Template temp = config.getTemplate(ftlName);
        temp.process(data, out);
        out.close();
        System.out.println(savePath + " 生成完毕" );
    }
}